package com.sharer.last.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.sharer.last.base.model.PageVO;
import com.sharer.last.model.dto.tag.TagChangeDTO;
import com.sharer.last.model.dto.tag.TagQueryDTO;
import com.sharer.last.model.po.TagPO;
import com.sharer.last.model.vo.tag.TagVO;

import java.util.List;

public interface TagService extends IService<TagPO> {
    /**
     * 根据tag名称查找数据
     *
     * @param tagName 标签名称
     * @return
     */
    TagPO getByTagName(String tagName);

    /**
     * 根据id查询数据
     *
     * @param id
     * @return
     */
    TagVO findById(Long id);

    /**
     * 根据id集合查询数据
     *
     * @param tagIdList
     * @return
     */
    List<TagPO> queryListByIds(List<Long> tagIdList);

    /**
     * 分页查询
     *
     * @param queryDTO
     * @return
     */
    PageVO<TagVO> selectListByPage(TagQueryDTO queryDTO);

    /**
     * 查询所有标签
     *
     * @return
     */
    List<TagVO> selectAllList();

    /**
     * 根据便签名称集合查询集合
     *
     * @param tagList
     * @return
     */
    List<TagPO> selectListByTagNames(List<String> tagList);

    /**
     * 创建标签
     *
     * @param blogId  博客id
     * @param tagList 标签
     */
    void createTag(Long blogId, List<String> tagList);

    /**
     * 创建标签
     *
     * @param dto 标签参数封装
     */
    void createTag(TagChangeDTO dto);

    /**
     * 标签更新
     *
     * @param tag
     */
    void updateTag(TagChangeDTO tag);

    /**
     * 根据id删除数据
     *
     * @param id 标签id
     */
    void deleteTagById(Long id);

}
